<script>
  // 给你一个二维整数数组 nums ，其中 nums[i] 是由 不同 正整数组成的一个非空数组，按 升序排列 返回一个数组，数组中的每个元素在 nums 所有数组 中都出现过。

  // 来源：力扣（LeetCode）
  // 链接：https://leetcode.cn/problems/intersection-of-multiple-arrays

  // 输入：nums = [[3,1,2,4,5],[1,2,3,4],[3,4,5,6]]
  // 输出：[3,4]
  // 解释：
  // nums[0] = [3,1,2,4,5]，nums[1] = [1,2,3,4]，nums[2] = [3,4,5,6]，在 nums 中每个数组中都出现的数字是 3 和 4 ，所以返回 [3,4] 。

  /**
   * map思路做
   * 记录每次数字出现次数
   * 然后 判断 如果出现的次数 和 nums长度相同的话 就push进res
   * 最后要做一下排序 否侧不会通过
   */

  var nums = [
    [3, 1, 2, 4, 5],
    [1, 2, 3, 4],
    [3, 4, 5, 6],
  ];
  /**
   * @param {number[][]} nums
   * @return {number[]}
   */
  var intersection = function (nums) {
    let res = [];
    let map = new Map();
    for (let i = 0; i < nums.length; i++) {
      for (let j = 0; j < nums[i].length; j++) {
        if (map.has(nums[i][j])) {
          var vlaue = map.get(nums[i][j]);
          map.set(nums[i][j], ++vlaue);
        } else {
          map.set(nums[i][j], 1);
        }
      }
    }
    Array.from(map.keys()).forEach((item) => {
      if (map.get(item) === nums.length) {
        res.push(item);
      }
    });
    return res.sort((a, b) => a - b);
  };
</script>
